package inherited;

/**
 * 建类：例如创建人类
 */
public abstract class Person {  //abstract是后来写抽象类的时候加的
    private int age;//年龄
    private String name;//姓名

    //构建函数
    public Person() {//父类默认的构造方法
        System.out.println("我是Person的构造方法");
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    /**
     * 如何访问私有成员？
     * 其他类要访问私有成员，必须写对应的公共方法才能访问
     * 下面是建立公共方法：
     * 1.以便其他类访问此类的私有成员（private）。
     * 2.此方法的好处在于，成员的保密性更高，因为只能引用此处创建的方法来对private成员进行修改。
     * 不添加和引用此方法，你定义的private成员依旧只能在此类中可用
     * 3.快捷方法：Alt+Insert 选择Getter and Setter
     */
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    //创建方法：
    public void sleep() {
        System.out.println("睡");
    }

    public void eat() {
        System.out.println("吃");
    }

    //写抽象类：（快捷键：Ctrl + i   或者   Alt + Insert 选择implement）
    /**
     * 抽象类可以有一个或多个构造函数，它是提供给子类进行调用的
     *
     */
    public abstract void study();//出错的原因的不在一个抽象类里，需要在父类加上abstract

    /**
     * 重写: 在子类中重写父类的方法
     * 1. Alt + Insert 选择Override Methods...
     * 或者Ctrl + O 选择toString()
     *
     * @return
     */
    @Override
    public String toString() {
        return name + "\t" + age;
    }

}


